/**
 * Chapter 1
 * 1.10 算数转换
 *
 * 如果 int 可以完整表示原类型的所有值，那么该原类型的值就转换为 int,
 * 否则转换为 unsigned int。称为整形升级
 * 如果其中一个操作数的类型是 unsigned int，那么另一个操作数被转换为 unsigned int
 *
 * 对无符号类型的建议
 * 尽量不要在代码中使用无符号类型，以免增加不必要的复杂性。尤其是不要仅仅因为无符号数不存在负值就用它来表示数量
 *
 * Clion很智能，在代码中就会提示 Condition is always true/fslse
 */
#include <stdio.h>

int array[] = {23, 24, 12, 17, 204, 99, 16};
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))
int main(void)
{
    if(-1 < (unsigned char)1)
        printf("-1 is less than unsigned char 1: ASCII semantics\n");
    else
        printf("-1 is not less than unsigned char 1: K&R semantics\n");

    int d = -1, x;
    if(d <= TOTAL_ELEMENTS){
        x = array[d+1];
        printf("d <= TOTAL_ELEMENTS %d\n", x);
    }
    if(-1 <= TOTAL_ELEMENTS){
        x = array[d+1];
        printf(" -1 <= TOTAL_ELEMENTS %d\n", x);
    }
    return 0;
}